from langchain_core.output_parsers import XMLOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_ollama import OllamaLLM
## pip install defusedxm
"""
llama3.2:3b模型，输出有问题，依然是json。
"""
model = OllamaLLM(model="llama3.2:3b")

# 还有一个用于提示语言模型填充数据结构的查询意图
query = "生成周星驰的简化电影作品列表，按照最新的时间降序"

## 设置解析器+将指令注入提示模板。
parser = XMLOutputParser()
prompt = PromptTemplate(
    template="回答用户的查询。\n{format_instructions}\n{query}\n",
    input_variables=["query"],
    partial_variables={"format_instructions": parser.get_format_instructions()},
)
print(parser.get_format_instructions())
"""
这里的parser不能放在chain中，chain = prompt | model ｜ parser会报错
"""
chain = prompt | model
response = chain.invoke({"query": query})
xml_output = parser.parse(response)
print(xml_output)

